import pandas as pd

pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
pd.set_option('display.max_columns', None)
pd.set_option('display.max_row', None)
pd.set_option('display.width', None)


# (1) 读入泰坦尼克号数据titanic.csv，生成一个新的dataframe对象titanic，并显示其前10行
df = pd.read_csv('titanic.csv')
# print(df[:10])


# (2) 检测泰坦尼克号这个数据集里有没有重复值，并显示检查结果
# dup = df.duplicated().sum()
# if dup > 0:
#     print(f"有重复值,重复值的数量: {sum}")
# else:
#     print(f"没有重复值!")


# (3) 求一下所有行的行数，删除年龄为缺失值的乘客记录，存为一个新的DataFrame: "age_no_na"，计算删除后的行数
# print(f"删除前的行数: {len(df)}")
# age_no_na = df.dropna(subset=['Age'])
# print(f"删除后的行数: {len(age_no_na)}")


# (4) 查看"Age"这一列的中位数，然后查看"Age"和"Fare"这两列的详细统计信息
# print(f"Age 的中位数: {df['Age'].median()}")
# print(f"Age 和 Fare 的详细统计信息:\n {df[['Age', 'Fare']].describe()}")


# # (5) 首先，求按照 "Pclass" 列分组后每组的平均年龄，然后求按照 "Pclass" 列分组后各数值列的均值，并尝试分析并写出从中发现的规律
print(f"按照 Pclass 列分组后每组的平均年龄:\n{df.groupby('Pclass')['Age'].mean()}")

res = df.select_dtypes(include=['number'])
print(f"按照 Pclass 列分组后各数值列的均值:\n{df.groupby('Pclass')[res.columns].mean()}")

# 规律发现：
# 1) 一等舱乘客的年龄最大，而三等舱乘客的年龄最小，二等舱居中；
# 2) 一等舱乘客的生存率最高，而三等舱乘客的生存率最低，二等舱居中；
# 3) 一等仓的票价远远高于三等舱；
